package com.movitech.mobile.cz.base.purchase.bizservice;


import com.movitech.mobile.cz.base.common.util.PageCode;
import com.movitech.mobile.cz.base.purchase.bizvo.DealRequestVO;
import com.movitech.mobile.cz.base.purchase.bizvo.PspOverallReqVO;
import com.movitech.mobile.cz.base.purchase.entity.PStrategicPurchaseContact;
import com.movitech.mobile.cz.base.purchase.entity.ext.*;

public interface PStrategicPurchaseService {

    /**
     * 战略采购规划列表
     * @param strategicPurchaseRequiredFindRequest
     * @return
     */
    PageCode getPStrategicPurchasePlanList(StrategicPurchaseRequiredFindRequest strategicPurchaseRequiredFindRequest);

    PageCode getPStrategicPurchaseRequireList(StrategicPurchaseRequiredFindRequest strategicPurchaseRequiredFindRequest);

    ExtPStrategicPurchasePlan getById(String id);

    ExtPStrategicPurchasePlan getByReqEntity(StrategicPurchaseRequiredFindRequest strategicPurchaseRequiredFindRequest);

    boolean deleteById(String id);
    boolean deleteDetailById(String id);

    boolean saveOrUpdatePStrategicPurchasePlan(ExtPStrategicPurchasePlan extPStrategicPurchasePlan);

    /**
     * 战略采购年度总规划列表
     * @param pStrategicPurchasePlanReq
     * @return
     */
    PageCode getPSpOverallPlanList(PStrategicPurchasePlanReq pStrategicPurchasePlanReq);


    ExtPSpOverallPlanDetail getPSpOverallPlan(String id);

    boolean saveOrUpdatePSpOverallPlan(ExtPSpOverallPlanDetail extPSpOverallPlanDetail);

    boolean generatePSpOverallPlan(PspOverallReqVO pspOverallReqVO);

    void launchOverallPlanConfirm(PspOverallReqVO pspOverallReqVO);

    PageCode overallPlanConfirmDealDtl(PStrategicPurchasePlanReq pStrategicPurchasePlanReq);

    void confirmOverallPlan(DealRequestVO dealRequestVO);

    boolean saveOrUpdatePurchaseContact(PStrategicPurchaseContact extPStrategicPurchaseContact);
}
